<?php defined('SYSPATH') or die('No direct script access.');

// -- Environment setup --------------------------------------------------------

// Load the core Kohana class
require SYSPATH.'classes/kohana/core'.EXT;

if (is_file(APPPATH.'classes/kohana'.EXT))
{
	// Application extends the core
	require APPPATH.'classes/kohana'.EXT;
}
else
{
	// Load empty core extension
	require SYSPATH.'classes/kohana'.EXT;
}

/**
 * Set the default time zone.
 *
 * @see  http://kohanaframework.org/guide/using.configuration
 * @see  http://php.net/timezones
 */
date_default_timezone_set('America/Chicago');

/**
 * Set the default locale.
 *
 * @see  http://kohanaframework.org/guide/using.configuration
 * @see  http://php.net/setlocale
 */
setlocale(LC_ALL, 'en_US.utf-8');

/**
 * Enable the Kohana auto-loader.
 *
 * @see  http://kohanaframework.org/guide/using.autoloading
 * @see  http://php.net/spl_autoload_register
 */
spl_autoload_register(array('Kohana', 'auto_load'));

/**
 * Enable the Kohana auto-loader for unserialization.
 *
 * @see  http://php.net/spl_autoload_call
 * @see  http://php.net/manual/var.configuration.php#unserialize-callback-func
 */
ini_set('unserialize_callback_func', 'spl_autoload_call');

// -- Configuration and initialization -----------------------------------------

/**
 * Set the default language
 */


if(isset($_COOKIE['lang']))
{
    setcookie("lang", $_COOKIE['lang'],31536000 + time(),'/');
    I18n::lang($_COOKIE['lang']);
}
else
{
    I18n::lang('en');
}

/**
 * Set Kohana::$environment if a 'KOHANA_ENV' environment variable has been supplied.
 *
 * Note: If you supply an invalid environment name, a PHP warning will be thrown
 * saying "Couldn't find constant Kohana::<INVALID_ENV_NAME>"
 */
if (isset($_SERVER['KOHANA_ENV']))
{
	Kohana::$environment = constant('Kohana::'.strtoupper($_SERVER['KOHANA_ENV']));
}

/**
 * Initialize Kohana, setting the default options.
 *
 * The following options are available:
 *
 * - string   base_url    path, and optionally domain, of your application   NULL
 * - string   index_file  name of your index file, usually "index.php"       index.php
 * - string   charset     internal character set used for input and output   utf-8
 * - string   cache_dir   set the internal cache directory                   APPPATH/cache
 * - boolean  errors      enable or disable error handling                   TRUE
 * - boolean  profile     enable or disable internal profiling               TRUE
 * - boolean  caching     enable or disable internal caching                 FALSE
 */
Kohana::init(array(
	'base_url'   => '/',
        'index_file' => false,
        'profile'    => (Kohana::$environment === Kohana::DEVELOPMENT),
        'caching'    => (Kohana::$environment === Kohana::PRODUCTION)
));

/**
 * Attach the file write to logging. Multiple writers are supported.
 */
Kohana::$log->attach(new Log_File(APPPATH.'logs'));

/**
 * Attach a file reader to config. Multiple readers are supported.
 */
Kohana::$config->attach(new Config_File);

/**
 * Enable modules. Modules are referenced by a relative or absolute path.
 */
Kohana::modules(array(
         'acl'        => MODPATH.'acl',          // Access control list 
	 'auth'       => MODPATH.'auth',         // Basic authentication
	// 'cache'      => MODPATH.'cache',      // Caching with multiple backends
	// 'codebench'  => MODPATH.'codebench',  // Benchmarking tool
	 'database'   => MODPATH.'database',     // Database access
	 'image'      => MODPATH.'image',        // Image manipulation
	 'orm'        => MODPATH.'orm',          // Object Relationship Mapping
         'email'      => MODPATH.'email',        // Email library 'swiftmailer'
         'xss'        => MODPATH.'xss',          // XSS clear library 'htmlpurifier'
         'geonames'   => MODPATH.'geonames',     // geonames library 
         'pagination' => MODPATH.'pagination',    // pagination module
         'embedmedia' => MODPATH.'embedmedia',
         'sphinx'     => MODPATH.'sphinx'
	// 'unittest'   => MODPATH.'unittest',   // Unit testing
	// 'userguide'  => MODPATH.'userguide',  // User guide and API documentation
	));

/**
 * Set the routes. Each route must have a minimum of a name, a URI and a set of
 * defaults for the URI.
 */

Route::set('error', 'error/<action>/<origuri>(/<message>)', array('action' => '[0-9]++', 'origuri' => '.+', 'message' => '.+')) 
        ->defaults(array( 
                'controller' => 'error_handler', 
                'action'     => 'index' 
        )); 

Route::set('get_animation_images', 'get_animation_images')
      ->defaults(array(
                'controller' => 'index',
                'action'     => 'get_animation_images'
       ));

Route::set('about', 'about')
      ->defaults(array(
                'controller' => 'index',
                'action'     => 'about'
       ));

Route::set('privacy', 'privacy')
      ->defaults(array(
                'controller' => 'index',
                'action'     => 'privacy'
       ));

Route::set('terms', 'terms')
      ->defaults(array(
                'controller' => 'index',
                'action'     => 'terms'
       ));

Route::set('help', 'help')
      ->defaults(array(
                'controller' => 'index',
                'action'     => 'help'
       ));

Route::set('contact_us', 'contact_us')
      ->defaults(array(
                'controller' => 'index',
                'action'     => 'contact'
       ));

Route::set('search_message', 'message/search/<type>(/p-<page>)(/<message_id>)', array('type' => 'inbox|outbox|bin'))
      ->defaults(array(
                'controller' => 'message',
                'action'     => 'search',
                'page'       =>  1,
       ));

Route::set('inbox', 'message/inbox(/p-<page>)(/<message_id>)')
      ->defaults(array(
                'controller' => 'message',
                'action'     => 'inbox',
                'page'       =>  1
       ));


Route::set('outbox', 'message/outbox(/p-<page>)(/<message_id>)')
      ->defaults(array(
                'controller' => 'message',
                'action'     => 'outbox',
                'page'       =>  1
       ));

Route::set('bin', 'message/bin(/p-<page>)(/<message_id>)')
      ->defaults(array(
                'controller' => 'message',
                'action'     => 'bin',
                'page'       =>  1
       ));


Route::set('profile', 'profile/<id>')
       ->defaults(array(
                'controller' => 'account',
                'action'     => 'show_profile',
       ));

Route::set('search', 'search/<word>')
       ->defaults(array(
                'controller' => 'search',
                'action'     => 'index',
       ));

Route::set('desktop', 'desktop/<id>', array('id' => '[a-zA-Z0-9]+-.*'))
       ->defaults(array(
                'controller' => 'desktop',
                'action'     => 'index',
       ));

Route::set('media', 'media/<file_id>/<suffix>/(<cache>/)<name>.<ext>')
       ->defaults(array(
                'controller' => 'uploaded_provider',
                'action'     => 'index',
       ));

Route::set('default', '(<controller>(/<action>(/<id>)))')
	->defaults(array(
		'controller' => 'index',
		'action'     => 'index',
	));

// Set cookie salt 
Cookie::$salt = 'dsa:{P:*^43|HEO83(i)d|?>,>"[;\.';